home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 8
/
Aminet 8 (1995)(GTI - Schatztruhe)[!][Oct 1995].iso
/
Aminet
/
util
/
cdity
/
cx23.lha
/
CX2.3
/
Quelltext
/
ListsAndNodes.def
< prev
next >
Wrap
Text File
|
1994-09-09
|
2KB
|
73 lines
DEFINITION MODULE ListsAndNodes;
(* ListsAndNodes.def - Einzeilige Funktionsbeschreibung
* Version : $VER: ListsAndNodes.def 0.0 (© 1994 Fin Schuppenhauer)
* Autor : Fin Schuppenhauer
* Braußpark 10
* 20537 Hamburg
* (Germany)
* E-Mail : 1schuppe@rzdspc2.informatik.uni-hamburg.de
* Erstellt am : 09 Sep 1994
* Letzte Änd. : 09 Sep 1994
*)
IMPORT
ed:ExecD;
CONST
ALLNODES = -1;
TYPE
StrPtr = POINTER TO ARRAY [0..1023] OF CHAR;
EnumerateProcedure = PROCEDURE (ed.NodePtr);
(* CompareNodeNames() vergleicht die Namen zweier ExecD.Node unter
* Verwendung von String.Compare. Für Nodes, die auf NIL zeigen gelten
* folgende Regeln:
*
* node1 node2 Rückgabewert
* -------------------------
* NIL NIL 0
* NIL #NIL 1
* #NIL NIL -1;
* #NIL #NIL String.Compare()
*)
PROCEDURE CompareNodeNames (node1, node2 : ed.NodePtr) : LONGINT;
(* CountNodes() zählt die Anzahl der Nodes einer ExecD.List. Beim
* Aufruf ist sicherzustellen, daß list # NIL ist.
*)
PROCEDURE CountNodes (list : ed.ListPtr) : LONGCARD;
(* Mit ChangeNodes() werden <node1> und <node2> vertauscht. Wird für
* <list> ein Wert # NIL übergeben, so wird der Listenkopf ggf.
* aktualisiert. Bedingung: <node1> muß in der Liste vor <node2>
* stehen.
*)
PROCEDURE ChangeNodes (list : ed.ListPtr; node1, node2 : ed.NodePtr);
(* Zum Sortieren einer ganzen Liste (oder auch nur Teilen davon) kann
* die Prozedur SortExecList() verwendet werden. Zu übergeben sind ein
* Zeiger auf die zu sortierende Liste (<list>) und ein Wert für
* <max>, der angibt, bis zu welcher Node die Liste betrachtet werden
* soll. Mit <max> = ALLNODES werden alle Nodes berücksichtigt.
*)
PROCEDURE SortExecList (list : ed.ListPtr; max : INTEGER);
(* Möchte man auf jeden Knoten einer Liste eine Prozedur ausführen,
* bietet sich Enumerate(). Diese Prozedur ruft jeden Knoten der Liste
* mit der übergebenen Prozedur auf.
*)
PROCEDURE Enumerate (list : ed.ListPtr; enumProc : EnumerateProcedure);
(* FreeAllNodes() gibt den belegten Speicher aller Knoten einer Liste
* mit ExecL.FreeMem wieder frei. Dabei muß auch die Größe des
* belegten Speicher einer Node angegeben werden.
*)
PROCEDURE FreeAllNodes (list : ed.ListPtr; nodesize : CARDINAL);
END ListsAndNodes.